﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using FTools.Interface;
using FTools.Comunicacion;
using FTools.Dominio;
using System.Collections;
using FTools.Generico;

namespace FTools.Presentacion
{
    public partial class FrmFabricante : Form
    {
        String tipoDato = "";
        public String TipoDato
        {
            get { return tipoDato; }
            set { tipoDato = value; }
        }
        InterfaceFabricante interfaceFabricante = new ComFabricante();

        public FrmFabricante()
        {
            InitializeComponent();
        }

        private void FrmFabricante_Load(object sender, EventArgs e)
        {
            cargarLvwFabricante();
            //if (this.TipoDato.Equals("FABRICANTE"))
            //{
            //    label.Text = "FABRICANTE";
            //    groupControl1.Text = "Mantenimiento Fabricante";
            //    cboNivel.Visible = true;
            //}
        }


/* ################################################################################################################################ */

#region Botones

        //BOTON GRABAR
        private void btnGrabar_Click(object sender, EventArgs e)
        {
            if (this.TipoDato.Equals("FABRICANTE"))
            {
                if (controlFabricante())
                {
                    Fabricante objFabricante = new Fabricante();
                    objFabricante.Nombre = txtNombre.Text;
                    objFabricante.Nivel = Convert.ToInt32(cboNivel.Text);
                    interfaceFabricante.altaFabricante(objFabricante);
                    this.cargarLvwFabricante();
                    FuncionesGenericas.limpiarTextForm(this);
                    FuncionesGenericas.limpiarComboForm(this);
                }
            }
        }

        //BOTON BORRAR
        private void btnBorrar_Click(object sender, EventArgs e)
        {
            if (lvwFabricante.SelectedItems.Count > 0)
            {
                foreach (ListViewItem x in lvwFabricante.SelectedItems)
                {
                    Fabricante objFabricante = (Fabricante)x.Tag;
                    interfaceFabricante.bajaFabricante(objFabricante);
                    this.cargarLvwFabricante();
                    cambioBotones('A');
                }
            }
            else
                MessageBox.Show("#Error Interno: Debe seleccionar Fabricante", "Fabricante", MessageBoxButtons.OK, MessageBoxIcon.Warning);
        }

        //BOTON MODIFICAR
        private void btnModificar_Click(object sender, EventArgs e)
        {
            if (controlFabricante())
            {
                if (lvwFabricante.SelectedItems.Count > 0)
                {
                    foreach (ListViewItem x in lvwFabricante.SelectedItems)
                    {
                        Fabricante objFabricante = (Fabricante)x.Tag;
                        objFabricante.Nombre = txtNombre.Text;
                        objFabricante.Nivel = Convert.ToInt32(cboNivel.Text);
                        interfaceFabricante.modificaFabricante(objFabricante);
                        this.cargarLvwFabricante();
                        cambioBotones('A');
                        FuncionesGenericas.limpiarTextForm(this);
                        FuncionesGenericas.limpiarComboForm(this);
                    }
                }
                else
                    MessageBox.Show("#Error Interno: Debe seleccionar Fabricante", "Fabricante", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }

#endregion

/* ################################################################################################################################ */

#region Metodos

        //METODO CONTROL INGRESO Y MODIF FABRICANTE
        public Boolean controlFabricante()
        {
            this.errorProvider1.Clear();
            if (txtNombre.Text != "" && cboNivel.SelectedIndex >= 0)
            {
                return true;
            }
            else if (txtNombre.Text == "")
            {
                this.errorProvider1.SetError(txtNombre, "Debe ingresar Nombre");
                txtNombre.Focus();
            }
            else if (cboNivel.SelectedIndex < 0)
            {
                this.errorProvider1.SetError(cboNivel, "Debe seleccionar Nivel");
            }
            return false;
        }

        //CARGA LVW FABRICANTE
        public void cargarLvwFabricante()
        {
            lvwFabricante.Items.Clear();
            lvwFabricante.Columns.Clear();
            ListViewItem x;
            //try
            //{
            lvwFabricante.Columns.Add("Nombre", 200, HorizontalAlignment.Left);
            lvwFabricante.Columns.Add("Nivel", 80, HorizontalAlignment.Left);
            lvwFabricante.ForeColor = SystemColors.ActiveCaptionText;
            ArrayList colFabricante = interfaceFabricante.obtenerColeccionFabricante();
            foreach (Fabricante objFabricante in colFabricante)
            {
                x = lvwFabricante.Items.Add(objFabricante.Nombre);
                x.SubItems.Add(Convert.ToString(objFabricante.Nivel));
                x.Tag = objFabricante;
            }
            //}
            //catch (Exception ex)
            //{
            //    MessageBox.Show("#Presentacion# " + ex.Message);
            //}
        }
        
        //CAMBIO BOTONES ALTA Y MODIF
        private void cambioBotones(char xChar)
        {
            if (xChar.Equals('A'))
            {
                btnGrabar.Visible = true;
                btnModificar.Visible = false;
            }
            else if (xChar.Equals('M'))
            {
                btnGrabar.Visible = false;
                btnModificar.Visible = true;
            }
        }

#endregion

/* ################################################################################################################################ */

#region Controles

        //SELECCION LVWFABRICANTE
        private void lvwFabricante_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (lvwFabricante.SelectedItems.Count > 0)
            {
                foreach (ListViewItem x in lvwFabricante.SelectedItems)
                {
                    if (x.Tag != null)
                    {
                        Fabricante objFabricante = (Fabricante)x.Tag;
                        txtNombre.Text = objFabricante.Nombre;
                        cboNivel.Text = Convert.ToString(objFabricante.Nivel);
                        this.cambioBotones('M');
                    }
                }
            }
            else 
            {
                FuncionesGenericas.limpiarTextForm(this);
                FuncionesGenericas.limpiarComboForm(this);
                this.cambioBotones('A');
            }
        }

#endregion
        

        

    }
}
